Para trabajar con bases de datos en R se pueden construir o cargar al software. En cualquier caso, la idea es tener un objeto data.frame que el tipo que identifica las bases de datos.
Para construir una base de datos, se debe definir las variables que representan las columnas, y el contenido de cada variable son la representación en cada fila, es importante que todas las variables tengan el mismo tamaño para construir una base de datos consistente.
years <- 1980:2019
nombre <- sample(c("Luisa","Andrés","Camilo","Natalia"),
size = 40,replace = T)
peso <- round(rnorm(40,60,5),2)
estatura <- ifelse(nombre=="Luisa",1.56,
ifelse(nombre=="Andrés",1.78,
ifelse(nombre=="Camilo",1.70,1.68)))
imc <- round(peso/estatura^2,2)Cada variable está asignada de manera independiente, aún no es una base de datos. Para que cumpla con la condición de base de datos es necesario que cada fila de cada variable represente una medición, es decir, si la primera posición del nombre es Camilo entonces las primera posición de las variables year, peso, estatura y imc deben corresponder a Camilo.
Para construir la base de datos, se usa el comando data.frame.
## function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE,
## fix.empty.names = TRUE, stringsAsFactors = default.stringsAsFactors())
## NULL
## years nombre peso estatura imc
## 1 1980 Camilo 61.56 1.70 21.30
## 2 1981 Luisa 55.17 1.56 22.67
## 3 1982 Luisa 53.05 1.56 21.80
## 4 1983 Natalia 66.76 1.68 23.65
## 5 1984 Natalia 63.24 1.68 22.41
## 6 1985 Camilo 53.00 1.70 18.34
## 7 1986 Luisa 58.92 1.56 24.21
## 8 1987 Luisa 57.95 1.56 23.81
## 9 1988 Natalia 62.98 1.68 22.31
## 10 1989 Camilo 57.79 1.70 20.00
## 11 1990 Camilo 59.28 1.70 20.51
## 12 1991 Camilo 58.95 1.70 20.40
## 13 1992 Natalia 64.13 1.68 22.72
## 14 1993 Camilo 59.61 1.70 20.63
## 15 1994 Luisa 57.23 1.56 23.52
## 16 1995 Camilo 59.10 1.70 20.45
## 17 1996 Camilo 56.36 1.70 19.50
## 18 1997 Natalia 63.78 1.68 22.60
## 19 1998 Camilo 66.65 1.70 23.06
## 20 1999 Camilo 59.55 1.70 20.61
## 21 2000 Camilo 69.79 1.70 24.15
## 22 2001 Camilo 53.22 1.70 18.42
## 23 2002 Natalia 56.80 1.68 20.12
## 24 2003 Natalia 67.47 1.68 23.91
## 25 2004 Andrés 59.04 1.78 18.63
## 26 2005 Camilo 65.44 1.70 22.64
## 27 2006 Andrés 59.88 1.78 18.90
## 28 2007 Luisa 59.94 1.56 24.63
## 29 2008 Andrés 53.70 1.78 16.95
## 30 2009 Luisa 59.27 1.56 24.35
## 31 2010 Natalia 67.78 1.68 24.02
## 32 2011 Natalia 64.49 1.68 22.85
## 33 2012 Andrés 61.36 1.78 19.37
## 34 2013 Camilo 57.88 1.70 20.03
## 35 2014 Andrés 61.12 1.78 19.29
## 36 2015 Luisa 56.99 1.56 23.42
## 37 2016 Natalia 58.96 1.68 20.89
## 38 2017 Natalia 67.77 1.68 24.01
## 39 2018 Andrés 60.94 1.78 19.23
## 40 2019 Andrés 62.58 1.78 19.75
## 'data.frame': 40 obs. of 5 variables:
## $ years : int 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 ...
## $ nombre : Factor w/ 4 levels "Andrés","Camilo",..: 2 3 3 4 4 2 3 3 4 2 ...
## $ peso : num 61.6 55.2 53 66.8 63.2 ...
## $ estatura: num 1.7 1.56 1.56 1.68 1.68 1.7 1.56 1.56 1.68 1.7 ...
## $ imc : num 21.3 22.7 21.8 23.6 22.4 ...
Con la base de datos creada se puede manipular más fácil, para ingresar a las filas y columnas se trabaja similar a las matrices.
## [1] 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994
## [16] 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009
## [31] 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019
## [1] Camilo Luisa Luisa Natalia Natalia Camilo Luisa Luisa Natalia
## [10] Camilo Camilo Camilo Natalia Camilo Luisa Camilo Camilo Natalia
## [19] Camilo Camilo Camilo Camilo Natalia Natalia Andrés Camilo Andrés
## [28] Luisa Andrés Luisa Natalia Natalia Andrés Camilo Andrés Luisa
## [37] Natalia Natalia Andrés Andrés
## Levels: Andrés Camilo Luisa Natalia
## years nombre peso estatura imc
## 8 1987 Luisa 57.95 1.56 23.81
## 9 1988 Natalia 62.98 1.68 22.31
## 10 1989 Camilo 57.79 1.70 20.00
## 11 1990 Camilo 59.28 1.70 20.51
## 12 1991 Camilo 58.95 1.70 20.40
## 13 1992 Natalia 64.13 1.68 22.72
## 14 1993 Camilo 59.61 1.70 20.63
## 15 1994 Luisa 57.23 1.56 23.52
## 16 1995 Camilo 59.10 1.70 20.45
## 17 1996 Camilo 56.36 1.70 19.50
## 18 1997 Natalia 63.78 1.68 22.60
## 19 1998 Camilo 66.65 1.70 23.06
## 20 1999 Camilo 59.55 1.70 20.61
## 21 2000 Camilo 69.79 1.70 24.15
## 22 2001 Camilo 53.22 1.70 18.42
## 23 2002 Natalia 56.80 1.68 20.12
## 24 2003 Natalia 67.47 1.68 23.91
## years peso imc
## 1 1980 61.56 21.30
## 2 1981 55.17 22.67
## 3 1982 53.05 21.80
## 4 1983 66.76 23.65
## 5 1984 63.24 22.41
## 6 1985 53.00 18.34
## 7 1986 58.92 24.21
## 8 1987 57.95 23.81
## 9 1988 62.98 22.31
## 10 1989 57.79 20.00
## 11 1990 59.28 20.51
## 12 1991 58.95 20.40
## 13 1992 64.13 22.72
## 14 1993 59.61 20.63
## 15 1994 57.23 23.52
## 16 1995 59.10 20.45
## 17 1996 56.36 19.50
## 18 1997 63.78 22.60
## 19 1998 66.65 23.06
## 20 1999 59.55 20.61
## 21 2000 69.79 24.15
## 22 2001 53.22 18.42
## 23 2002 56.80 20.12
## 24 2003 67.47 23.91
## 25 2004 59.04 18.63
## 26 2005 65.44 22.64
## 27 2006 59.88 18.90
## 28 2007 59.94 24.63
## 29 2008 53.70 16.95
## 30 2009 59.27 24.35
## 31 2010 67.78 24.02
## 32 2011 64.49 22.85
## 33 2012 61.36 19.37
## 34 2013 57.88 20.03
## 35 2014 61.12 19.29
## 36 2015 56.99 23.42
## 37 2016 58.96 20.89
## 38 2017 67.77 24.01
## 39 2018 60.94 19.23
## 40 2019 62.58 19.75
## years imc
## 1 1980 21.30
## 2 1981 22.67
## 3 1982 21.80
## 4 1983 23.65
## 5 1984 22.41
## 6 1985 18.34
## 7 1986 24.21
## 8 1987 23.81
## 9 1988 22.31
## 10 1989 20.00
## 11 1990 20.51
## 12 1991 20.40
## 13 1992 22.72
## 14 1993 20.63
## 15 1994 23.52
## 16 1995 20.45
## 17 1996 19.50
## 18 1997 22.60
## 19 1998 23.06
## 20 1999 20.61
## 21 2000 24.15
## 22 2001 18.42
## 23 2002 20.12
## 24 2003 23.91
## 25 2004 18.63
## 26 2005 22.64
## 27 2006 18.90
## 28 2007 24.63
## 29 2008 16.95
## 30 2009 24.35
## 31 2010 24.02
## 32 2011 22.85
## 33 2012 19.37
## 34 2013 20.03
## 35 2014 19.29
## 36 2015 23.42
## 37 2016 20.89
## 38 2017 24.01
## 39 2018 19.23
## 40 2019 19.75
R maneja casi cualquier tipo de archivo de bases de datos, pero su formato de creación de base de datos es .Rds o .RData, en el paquete base y utilsexiste una colección de funciones para leer marcos de datos.
## [1] "read.dcf" "readBin" "readChar" "readline" "readLines"
## [6] "readRDS" "readRenviron" "Sys.readlink"
## [1] "read.csv" "read.csv2" "read.delim" "read.delim2"
## [5] "read.DIF" "read.fortran" "read.fwf" "read.socket"
## [9] "read.table" "readCitationFile" "readClipboard" "readRegistry"
Para cargar otras extensiones de bases de datos es necesario utilizar paquetes.
# Para otros Software de estadística (Minitab, SAS, Stata, SPSS)
install.packages("haven",dependencies = T)
install.packages("foreign",dependencies = T)
# Archivos de excel
install.packages("xlsx",dependencies = T) # Requiere Java
install.packages("readxl",dependencies = T)
install.packages("openxlsx",dependencies = T)
# SQL
install.packages("sqldf",dependencies = T)Para trabajar con SQL en R se recomienda leer el artículo de Josh Errickson y las notas de Data Carpentry.
La base de datos de el ICFES 2015-02 está disponible en Excel, todos los ejemplos que acontinuación se muestran se trabajan con esta base de datos.
Si el archivo tiene la extensión .xlsx se utiliza los siguientes comandos:
# Con xlsx
Icfes <- read.xlsx(file = "ICFES20152.xlsx",sheetName = 1,encoding = "UTF-8")
Icfes <- read.xlsx2(file = "ICFES20152.xls",sheetIndex = 1)
# Con readxl
Icfes <- read_xlsx(path = "ICFES20152.xlsx")
# Con openxlsx
Icfes <- read.xlsx(file = "ICFES20152.xlsx",sheet = 1)Para cargar los archivos de esta manera es necesario que se encuentren alojados en la carpeta de trabajo que puede verificar con el comand getwd(), y para asignar una nuava ruta se utiliza el comando setwd(). Una función muy útil para buscar carpetas es choose.dir(), y para seleccionar una archivo específico file.choose().
# CSV
Icfes <- read.csv(file.choose(),sep = ",")
# Con xlsx
Icfes <- read.xlsx(file = file.choose(),sheetName = 1,encoding = "UTF-8")
Icfes <- read.xlsx2(file = file.choose(),sheetIndex = 1)
# Con readxl
Icfes <- read_xlsx(path = file.choose())
# Con openxlsx
Icfes <- read.xlsx(file = file.choose(),sheet = 1)## # A tibble: 12,162 x 24
## CODINST NOMBREINSTITUCI~ CODIGOMUNICIPIO NOMBREMUNICIPIO DEPARTAMENTO
## <chr> <chr> <chr> <chr> <chr>
## 1 142133 I.E. INTERNADO ~ 91263 EL ENCANTO AMAZONAS
## 2 087445 I.E. COLEGIO IN~ 91405 LA CHORRERA AMAZONAS
## 3 117127 I.E. INTERNADO ~ 91407 LA PEDRERA AMAZONAS
## 4 019109 I.E. ESCUELA NO~ 91001 LETICIA AMAZONAS
## 5 038919 I.E. INEM JOSE ~ 91001 LETICIA AMAZONAS
## 6 065482 I.E. INDIGENA S~ 91001 LETICIA AMAZONAS
## 7 065490 COL FEMENINO MA~ 91001 LETICIA AMAZONAS
## 8 087429 COL CRISTO REY 91001 LETICIA AMAZONAS
## 9 093229 I.E. COLEGIO TE~ 91001 LETICIA AMAZONAS
## 10 117358 I.E. SAGRADO CO~ 91001 LETICIA AMAZONAS
## # ... with 12,152 more rows, and 19 more variables: CALENDARIO <chr>,
## # NATURALEZA <chr>, JORNADA <chr>, EVALUADOS <dbl>, PROMLECTURACRITICA <dbl>,
## # PROMMATEMATICA <dbl>, PROMSOCIALESYCIUDADANAS <dbl>,
## # PROMCIENCIASNATURALES <dbl>, PROMINGLES <dbl>,
## # PROMRAZONAMIENTOCUANTITA <dbl>, PROMCOMPETENCIASCIUDADAN <dbl>,
## # DESVLECTURACRITICA <dbl>, DESVMATEMATICA <dbl>,
## # DESVSOCIALESYCIUDADANAS <dbl>, DESVCIENCIASNATURALES <dbl>,
## # DESVINGLES <dbl>, DESVRAZONAMIENTOCUANTITA <dbl>,
## # DESVCOMPETENCIASCIUDADAN <dbl>, PERIODO <chr>
## [1] 12162 24
## [1] 24
## [1] "CODINST" "NOMBREINSTITUCION"
## [3] "CODIGOMUNICIPIO" "NOMBREMUNICIPIO"
## [5] "DEPARTAMENTO" "CALENDARIO"
## [7] "NATURALEZA" "JORNADA"
## [9] "EVALUADOS" "PROMLECTURACRITICA"
## [11] "PROMMATEMATICA" "PROMSOCIALESYCIUDADANAS"
## [13] "PROMCIENCIASNATURALES" "PROMINGLES"
## [15] "PROMRAZONAMIENTOCUANTITA" "PROMCOMPETENCIASCIUDADAN"
## [17] "DESVLECTURACRITICA" "DESVMATEMATICA"
## [19] "DESVSOCIALESYCIUDADANAS" "DESVCIENCIASNATURALES"
## [21] "DESVINGLES" "DESVRAZONAMIENTOCUANTITA"
## [23] "DESVCOMPETENCIASCIUDADAN" "PERIODO"
## # A tibble: 3 x 24
## CODINST NOMBREINSTITUCI~ CODIGOMUNICIPIO NOMBREMUNICIPIO DEPARTAMENTO
## <chr> <chr> <chr> <chr> <chr>
## 1 142133 I.E. INTERNADO ~ 91263 EL ENCANTO AMAZONAS
## 2 087445 I.E. COLEGIO IN~ 91405 LA CHORRERA AMAZONAS
## 3 117127 I.E. INTERNADO ~ 91407 LA PEDRERA AMAZONAS
## # ... with 19 more variables: CALENDARIO <chr>, NATURALEZA <chr>,
## # JORNADA <chr>, EVALUADOS <dbl>, PROMLECTURACRITICA <dbl>,
## # PROMMATEMATICA <dbl>, PROMSOCIALESYCIUDADANAS <dbl>,
## # PROMCIENCIASNATURALES <dbl>, PROMINGLES <dbl>,
## # PROMRAZONAMIENTOCUANTITA <dbl>, PROMCOMPETENCIASCIUDADAN <dbl>,
## # DESVLECTURACRITICA <dbl>, DESVMATEMATICA <dbl>,
## # DESVSOCIALESYCIUDADANAS <dbl>, DESVCIENCIASNATURALES <dbl>,
## # DESVINGLES <dbl>, DESVRAZONAMIENTOCUANTITA <dbl>,
## # DESVCOMPETENCIASCIUDADAN <dbl>, PERIODO <chr>
## # A tibble: 3 x 24
## CODINST NOMBREINSTITUCI~ CODIGOMUNICIPIO NOMBREMUNICIPIO DEPARTAMENTO
## <chr> <chr> <chr> <chr> <chr>
## 1 135020 JOSÉ CELESTINO ~ 99001 PUERTO CARREÑO VICHADA
## 2 167981 I.E. MARIA INMA~ 99001 PUERTO CARREÑO VICHADA
## 3 037440 I.E. INTERNADO ~ 99624 SANTA ROSALIA VICHADA
## # ... with 19 more variables: CALENDARIO <chr>, NATURALEZA <chr>,
## # JORNADA <chr>, EVALUADOS <dbl>, PROMLECTURACRITICA <dbl>,
## # PROMMATEMATICA <dbl>, PROMSOCIALESYCIUDADANAS <dbl>,
## # PROMCIENCIASNATURALES <dbl>, PROMINGLES <dbl>,
## # PROMRAZONAMIENTOCUANTITA <dbl>, PROMCOMPETENCIASCIUDADAN <dbl>,
## # DESVLECTURACRITICA <dbl>, DESVMATEMATICA <dbl>,
## # DESVSOCIALESYCIUDADANAS <dbl>, DESVCIENCIASNATURALES <dbl>,
## # DESVINGLES <dbl>, DESVRAZONAMIENTOCUANTITA <dbl>,
## # DESVCOMPETENCIASCIUDADAN <dbl>, PERIODO <chr>
## tibble [12,162 x 24] (S3: tbl_df/tbl/data.frame)
## $ CODINST : chr [1:12162] "142133" "087445" "117127" "019109" ...
## $ NOMBREINSTITUCION : chr [1:12162] "I.E. INTERNADO SAN RAFAEL DEL CARAPARANA - SEDE PRINCIPAL" "I.E. COLEGIO INDIGENA CASA DEL CONOCIMIENTO - SEDE PRINCIPAL" "I.E. INTERNADO INDIGENA SAN JOSÉ - SEDE PRINCIPAL" "I.E. ESCUELA NORMAL SUPERIOR MARCELIANO EDUARDO CANYES SANTACANA - SEDE PRINCIPAL" ...
## $ CODIGOMUNICIPIO : chr [1:12162] "91263" "91405" "91407" "91001" ...
## $ NOMBREMUNICIPIO : chr [1:12162] "EL ENCANTO" "LA CHORRERA" "LA PEDRERA" "LETICIA" ...
## $ DEPARTAMENTO : chr [1:12162] "AMAZONAS" "AMAZONAS" "AMAZONAS" "AMAZONAS" ...
## $ CALENDARIO : chr [1:12162] "A" "A" "A" "A" ...
## $ NATURALEZA : chr [1:12162] "OFICIAL" "OFICIAL" "OFICIAL" "OFICIAL" ...
## $ JORNADA : chr [1:12162] "MAÑANA" "MAÑANA" "COMPLETA U ORDINARIA" "MAÑANA" ...
## $ EVALUADOS : num [1:12162] 21 38 31 89 134 75 14 18 45 61 ...
## $ PROMLECTURACRITICA : num [1:12162] 42.5 40.1 39.9 49.9 45.9 ...
## $ PROMMATEMATICA : num [1:12162] 42 40.2 39.5 47.6 44 ...
## $ PROMSOCIALESYCIUDADANAS : num [1:12162] 43.7 41.3 38.8 50.3 47 ...
## $ PROMCIENCIASNATURALES : num [1:12162] 44.2 41.8 42.7 49.5 46.5 ...
## $ PROMINGLES : num [1:12162] 46 43.6 43.8 47.8 46.6 ...
## $ PROMRAZONAMIENTOCUANTITA: num [1:12162] 41.8 40.3 39.7 48 45 ...
## $ PROMCOMPETENCIASCIUDADAN: num [1:12162] 42 39 37.7 49.4 46.4 ...
## $ DESVLECTURACRITICA : num [1:12162] 5.78 6.01 5.98 7.94 7.88 6.22 6.28 9.65 6.6 8.02 ...
## $ DESVMATEMATICA : num [1:12162] 7.37 7.43 9.04 9.5 8.41 ...
## $ DESVSOCIALESYCIUDADANAS : num [1:12162] 7.52 7.72 8.56 9.38 8.22 ...
## $ DESVCIENCIASNATURALES : num [1:12162] 5.94 5.23 5.32 6.81 6.44 ...
## $ DESVINGLES : num [1:12162] 6.72 4.48 5.42 7.49 6.13 ...
## $ DESVRAZONAMIENTOCUANTITA: num [1:12162] 8.23 7.57 9.3 10.42 8.9 ...
## $ DESVCOMPETENCIASCIUDADAN: num [1:12162] 7.1 7.27 6.77 8.95 8.24 ...
## $ PERIODO : chr [1:12162] "20152" "20152" "20152" "20152" ...
## [1] "tbl_df" "tbl" "data.frame"
## [1] "character"
## CODINST NOMBREINSTITUCION CODIGOMUNICIPIO NOMBREMUNICIPIO
## Length:12162 Length:12162 Length:12162 Length:12162
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## DEPARTAMENTO CALENDARIO NATURALEZA JORNADA
## Length:12162 Length:12162 Length:12162 Length:12162
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## EVALUADOS PROMLECTURACRITICA PROMMATEMATICA PROMSOCIALESYCIUDADANAS
## Min. : 1.00 Min. :28.00 Min. : 24.50 Min. :21.00
## 1st Qu.: 17.00 1st Qu.:44.74 1st Qu.: 43.57 1st Qu.:43.98
## Median : 32.00 Median :48.19 Median : 48.00 Median :48.32
## Mean : 44.95 Mean :48.66 Mean : 48.80 Mean :48.64
## 3rd Qu.: 60.00 3rd Qu.:51.77 3rd Qu.: 52.63 3rd Qu.:52.59
## Max. :987.00 Max. :77.00 Max. :100.00 Max. :83.00
## PROMCIENCIASNATURALES PROMINGLES PROMRAZONAMIENTOCUANTITA
## Min. :25.00 Min. :25.00 Min. : 21.50
## 1st Qu.:44.59 1st Qu.:45.27 1st Qu.: 44.05
## Median :48.47 Median :47.51 Median : 48.94
## Mean :49.03 Mean :49.63 Mean : 49.67
## 3rd Qu.:52.45 3rd Qu.:51.27 3rd Qu.: 53.95
## Max. :85.95 Max. :97.00 Max. :100.00
## PROMCOMPETENCIASCIUDADAN DESVLECTURACRITICA DESVMATEMATICA
## Min. :22.00 Min. : 0.000 Min. : 0.000
## 1st Qu.:44.22 1st Qu.: 6.540 1st Qu.: 7.880
## Median :48.13 Median : 7.470 Median : 9.020
## Mean :48.27 Mean : 7.406 Mean : 9.056
## 3rd Qu.:51.92 3rd Qu.: 8.320 3rd Qu.:10.260
## Max. :76.00 Max. :21.920 Max. :31.820
## DESVSOCIALESYCIUDADANAS DESVCIENCIASNATURALES DESVINGLES
## Min. : 0.000 Min. : 0.000 Min. : 0.000
## 1st Qu.: 8.140 1st Qu.: 6.560 1st Qu.: 5.620
## Median : 9.060 Median : 7.580 Median : 6.840
## Mean : 8.984 Mean : 7.541 Mean : 7.501
## 3rd Qu.: 9.970 3rd Qu.: 8.550 3rd Qu.: 8.940
## Max. :28.000 Max. :20.510 Max. :27.790
## DESVRAZONAMIENTOCUANTITA DESVCOMPETENCIASCIUDADAN PERIODO
## Min. : 0.00 Min. : 0.000 Length:12162
## 1st Qu.: 8.94 1st Qu.: 7.400 Class :character
## Median :10.30 Median : 8.240 Mode :character
## Mean :10.33 Mean : 8.172
## 3rd Qu.:11.76 3rd Qu.: 9.080
## Max. :32.19 Max. :23.330
El operador $ sirve para extraer las variables del data.frame, siepre y cuando la base de datos posea nombres.
## [1] "write" "write.dcf" "writeBin" "writeChar" "writeLines"
## [1] "aspell_write_personal_dictionary_file"
## [2] "write.csv"
## [3] "write.csv2"
## [4] "write.socket"
## [5] "write.table"
## [6] "writeClipboard"
## [1] "write.xlsx" "write.xlsx2"
## [1] "write_dta" "write_sas" "write_sav" "write_xpt"
## [1] "write.arff" "write.dbf" "write.dta" "write.foreign"
applyapply() Aplica la función sobre un la marginal de un arreglo o matriz.
## [,1] [,2]
## [1,] 1 11
## [2,] 2 12
## [3,] 3 13
## [4,] 4 14
## [5,] 5 15
## [6,] 6 16
## [7,] 7 17
## [8,] 8 18
## [9,] 9 19
## [10,] 10 20
## [1] 6 7 8 9 10 11 12 13 14 15
## [1] 5.5 15.5
## [,1] [,2]
## [1,] 0.5 5.5
## [2,] 1.0 6.0
## [3,] 1.5 6.5
## [4,] 2.0 7.0
## [5,] 2.5 7.5
## [6,] 3.0 8.0
## [7,] 3.5 8.5
## [8,] 4.0 9.0
## [9,] 4.5 9.5
## [10,] 5.0 10.0
## CODINST NOMBREINSTITUCION CODIGOMUNICIPIO
## 12162 12162 12162
## NOMBREMUNICIPIO DEPARTAMENTO CALENDARIO
## 12162 12162 12162
## NATURALEZA JORNADA EVALUADOS
## 12162 12162 12162
## PROMLECTURACRITICA PROMMATEMATICA PROMSOCIALESYCIUDADANAS
## 12162 12162 12162
## PROMCIENCIASNATURALES PROMINGLES PROMRAZONAMIENTOCUANTITA
## 12162 12162 12162
## PROMCOMPETENCIASCIUDADAN DESVLECTURACRITICA DESVMATEMATICA
## 12162 12162 12162
## DESVSOCIALESYCIUDADANAS DESVCIENCIASNATURALES DESVINGLES
## 12162 12162 12162
## DESVRAZONAMIENTOCUANTITA DESVCOMPETENCIASCIUDADAN PERIODO
## 12162 12162 12162
## EVALUADOS PROMLECTURACRITICA PROMMATEMATICA
## 44.947788 48.655567 48.799209
## PROMSOCIALESYCIUDADANAS PROMCIENCIASNATURALES PROMINGLES
## 48.636474 49.025593 49.633360
## PROMRAZONAMIENTOCUANTITA PROMCOMPETENCIASCIUDADAN DESVLECTURACRITICA
## 49.672010 48.267984 7.406274
## DESVMATEMATICA
## 9.055529
## EVALUADOS PROMLECTURACRITICA PROMMATEMATICA
## 43.843946 5.573827 7.580989
## PROMSOCIALESYCIUDADANAS PROMCIENCIASNATURALES PROMINGLES
## 6.649614 6.260166 7.269747
## PROMRAZONAMIENTOCUANTITA PROMCOMPETENCIASCIUDADAN DESVLECTURACRITICA
## 8.120015 5.730609 1.731647
## DESVMATEMATICA
## 2.219776
by() Aplica la función sobre una división de una base de datos (data.frame) por un factor.
## Icfes$CALENDARIO: A
## EVALUADOS PROMLECTURACRITICA PROMMATEMATICA
## 45.393267 48.601547 48.741677
## PROMSOCIALESYCIUDADANAS PROMCIENCIASNATURALES PROMINGLES
## 48.589383 48.972063 49.514758
## PROMRAZONAMIENTOCUANTITA PROMCOMPETENCIASCIUDADAN DESVLECTURACRITICA
## 49.612257 48.229033 7.436473
## DESVMATEMATICA
## 9.091584
## ------------------------------------------------------------
## Icfes$CALENDARIO: B
## EVALUADOS PROMLECTURACRITICA PROMMATEMATICA
## 16.685864 52.229529 52.711885
## PROMSOCIALESYCIUDADANAS PROMCIENCIASNATURALES PROMINGLES
## 51.758220 52.761885 56.728743
## PROMRAZONAMIENTOCUANTITA PROMCOMPETENCIASCIUDADAN DESVLECTURACRITICA
## 53.712199 50.859634 5.469215
## DESVMATEMATICA
## 6.880628
## ------------------------------------------------------------
## Icfes$CALENDARIO: O
## EVALUADOS PROMLECTURACRITICA PROMMATEMATICA
## 47.566667 47.403333 46.788333
## PROMSOCIALESYCIUDADANAS PROMCIENCIASNATURALES PROMINGLES
## 47.505333 46.544667 51.666667
## PROMRAZONAMIENTOCUANTITA PROMCOMPETENCIASCIUDADAN DESVLECTURACRITICA
## 47.733333 47.271667 7.718667
## DESVMATEMATICA
## 8.551333
lapply() Aplica una función sobre una lista o un vector.
## $a
## [1] 5.5
##
## $b
## [1] 15.5
## $a
## [1] 55
##
## $b
## [1] 155
## $CODINST
## Length Class Mode
## 12162 character character
##
## $NOMBREINSTITUCION
## Length Class Mode
## 12162 character character
##
## $CODIGOMUNICIPIO
## Length Class Mode
## 12162 character character
##
## $NOMBREMUNICIPIO
## Length Class Mode
## 12162 character character
##
## $DEPARTAMENTO
## Length Class Mode
## 12162 character character
##
## $CALENDARIO
## Length Class Mode
## 12162 character character
##
## $NATURALEZA
## Length Class Mode
## 12162 character character
##
## $JORNADA
## Length Class Mode
## 12162 character character
##
## $EVALUADOS
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.00 17.00 32.00 44.95 60.00 987.00
##
## $PROMLECTURACRITICA
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 28.00 44.74 48.19 48.66 51.77 77.00
##
## $PROMMATEMATICA
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 24.50 43.57 48.00 48.80 52.63 100.00
##
## $PROMSOCIALESYCIUDADANAS
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 21.00 43.98 48.32 48.64 52.59 83.00
##
## $PROMCIENCIASNATURALES
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 25.00 44.59 48.47 49.03 52.45 85.95
##
## $PROMINGLES
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 25.00 45.27 47.51 49.63 51.27 97.00
##
## $PROMRAZONAMIENTOCUANTITA
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 21.50 44.05 48.94 49.67 53.95 100.00
##
## $PROMCOMPETENCIASCIUDADAN
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 22.00 44.22 48.13 48.27 51.92 76.00
##
## $DESVLECTURACRITICA
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 6.540 7.470 7.406 8.320 21.920
##
## $DESVMATEMATICA
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 7.880 9.020 9.056 10.260 31.820
##
## $DESVSOCIALESYCIUDADANAS
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 8.140 9.060 8.984 9.970 28.000
##
## $DESVCIENCIASNATURALES
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 6.560 7.580 7.541 8.550 20.510
##
## $DESVINGLES
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 5.620 6.840 7.501 8.940 27.790
##
## $DESVRAZONAMIENTOCUANTITA
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.00 8.94 10.30 10.33 11.76 32.19
##
## $DESVCOMPETENCIASCIUDADAN
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 7.400 8.240 8.172 9.080 23.330
##
## $PERIODO
## Length Class Mode
## 12162 character character
sapply() Aplica una función sobre una lista o un vector y si el resultado se puede simplificar en un formato más simple, lo hace.
## a b
## 5.5 15.5
## a b
## 55 155
## CODINST NOMBREINSTITUCION CODIGOMUNICIPIO
## NA NA NA
## NOMBREMUNICIPIO DEPARTAMENTO CALENDARIO
## NA NA NA
## NATURALEZA JORNADA EVALUADOS
## NA NA 44.947788
## PROMLECTURACRITICA PROMMATEMATICA PROMSOCIALESYCIUDADANAS
## 48.655567 48.799209 48.636474
## PROMCIENCIASNATURALES PROMINGLES PROMRAZONAMIENTOCUANTITA
## 49.025593 49.633360 49.672010
## PROMCOMPETENCIASCIUDADAN DESVLECTURACRITICA DESVMATEMATICA
## 48.267984 7.406274 9.055529
## DESVSOCIALESYCIUDADANAS DESVCIENCIASNATURALES DESVINGLES
## 8.984044 7.540577 7.500546
## DESVRAZONAMIENTOCUANTITA DESVCOMPETENCIASCIUDADAN PERIODO
## 10.327338 8.171681 NA
vapply() Aplica la función sobre una lista y devuelve el resultado de acuerdo a un formato indicado.
l <- list(a = 1:10, b = 11:20)
lFivenum <- vapply(l,
fivenum,
c(Min. = 0, "1er Cuart." = 0,
Mediana = 0, "3er Cuart." = 0, Max. = 0))
class(lFivenum)## [1] "matrix"
## a b
## Min. 1.0 11.0
## 1er Cuart. 3.0 13.0
## Mediana 5.5 15.5
## 3er Cuart. 8.0 18.0
## Max. 10.0 20.0
QuantIcfes <- vapply(Icfes[,9:23],
quantile,
c(Min. = 0, "1er Cuart." = 0,
Mediana = 0, "3er Cuart." = 0, Max. = 0))
t(QuantIcfes)## Min. 1er Cuart. Mediana 3er Cuart. Max.
## EVALUADOS 1.0 17.00 32.000 60.0000 987.00
## PROMLECTURACRITICA 28.0 44.74 48.190 51.7675 77.00
## PROMMATEMATICA 24.5 43.57 48.000 52.6300 100.00
## PROMSOCIALESYCIUDADANAS 21.0 43.98 48.320 52.5900 83.00
## PROMCIENCIASNATURALES 25.0 44.59 48.470 52.4500 85.95
## PROMINGLES 25.0 45.27 47.505 51.2700 97.00
## PROMRAZONAMIENTOCUANTITA 21.5 44.05 48.935 53.9500 100.00
## PROMCOMPETENCIASCIUDADAN 22.0 44.22 48.130 51.9175 76.00
## DESVLECTURACRITICA 0.0 6.54 7.470 8.3200 21.92
## DESVMATEMATICA 0.0 7.88 9.020 10.2600 31.82
## DESVSOCIALESYCIUDADANAS 0.0 8.14 9.060 9.9700 28.00
## DESVCIENCIASNATURALES 0.0 6.56 7.580 8.5500 20.51
## DESVINGLES 0.0 5.62 6.840 8.9400 27.79
## DESVRAZONAMIENTOCUANTITA 0.0 8.94 10.300 11.7600 32.19
## DESVCOMPETENCIASCIUDADAN 0.0 7.40 8.240 9.0800 23.33
mapply() Es la versión multivariada de lapply y sapply. Aplica la función a los elementos correspondientes de múltiples listas.
l1 <- list(a = c(1:10), b = c(11:20))
l2 <- list(c = c(21:30), d = c(31:40))
mapply(sum, l1$a, l1$b, l2$c, l2$d)## [1] 64 68 72 76 80 84 88 92 96 100
## a b
## 310 510
## [1] 64 68 72 76 80 84 88 92 96 100 74 78 82 86 90 94 98 102 106
## [20] 110
## [1] 0.24 -0.08 -0.23 -0.36 -0.99 0.30 -0.50 -1.50 0.49 -1.07 -0.18 0.40
## [13] -2.30 -0.60 0.03 -0.32 3.50 -0.26 0.39 -1.76 0.68 -0.17 -0.67 -2.20
## [25] -0.87 -2.37 -0.41 0.20 -0.29 -0.68
tapply() Aplica la función sobre un vector, de acuerdo a una clasificación de la variable tipo factor.
## COMPLETA U ORDINARIA MAÑANA NOCHE
## 37.73148 49.74110 34.91196
## SABATINA - DOMINICAL TARDE
## 35.92033 53.13094
## COMPLETA U ORDINARIA MAÑANA NOCHE
## 54.80120 49.65380 42.64660
## SABATINA - DOMINICAL TARDE
## 42.56121 49.44264
En el universo de tidyverse la programación vía tuberías es la principal novedad.
# Muestra aleatoria de resultados del ICFES
aux <- sample(dim(Icfes)[1],size = 2000)
library(dplyr)
Icfes2 <- tbl_df(Icfes[aux,])Filtrar una base de datos
## # A tibble: 63 x 24
## CODINST NOMBREINSTITUCI~ CODIGOMUNICIPIO NOMBREMUNICIPIO DEPARTAMENTO
## <chr> <chr> <chr> <chr> <chr>
## 1 089821 INST EDUC ALFON~ 05001 MEDELLIN ANTIOQUIA
## 2 114926 INST EDUC MADRE~ 05001 MEDELLIN ANTIOQUIA
## 3 053595 COLEGIO EUSKADI~ 05001 MEDELLIN ANTIOQUIA
## 4 028019 INST EDUC CRIST~ 05001 MEDELLIN ANTIOQUIA
## 5 113514 INST EDUC RAFAE~ 05001 MEDELLIN ANTIOQUIA
## 6 000265 INST FERRINI - ~ 05001 MEDELLIN ANTIOQUIA
## 7 144576 INST EDUC MAEST~ 05001 MEDELLIN ANTIOQUIA
## 8 110825 I.E. GUADALUPAN~ 05001 MEDELLIN ANTIOQUIA
## 9 056796 SEC ESC PAULO VI 05001 MEDELLIN ANTIOQUIA
## 10 027896 INST EDUC JOSE ~ 05001 MEDELLIN ANTIOQUIA
## # ... with 53 more rows, and 19 more variables: CALENDARIO <chr>,
## # NATURALEZA <chr>, JORNADA <chr>, EVALUADOS <dbl>, PROMLECTURACRITICA <dbl>,
## # PROMMATEMATICA <dbl>, PROMSOCIALESYCIUDADANAS <dbl>,
## # PROMCIENCIASNATURALES <dbl>, PROMINGLES <dbl>,
## # PROMRAZONAMIENTOCUANTITA <dbl>, PROMCOMPETENCIASCIUDADAN <dbl>,
## # DESVLECTURACRITICA <dbl>, DESVMATEMATICA <dbl>,
## # DESVSOCIALESYCIUDADANAS <dbl>, DESVCIENCIASNATURALES <dbl>,
## # DESVINGLES <dbl>, DESVRAZONAMIENTOCUANTITA <dbl>,
## # DESVCOMPETENCIASCIUDADAN <dbl>, PERIODO <chr>
## # A tibble: 63 x 24
## CODINST NOMBREINSTITUCI~ CODIGOMUNICIPIO NOMBREMUNICIPIO DEPARTAMENTO
## <chr> <chr> <chr> <chr> <chr>
## 1 089821 INST EDUC ALFON~ 05001 MEDELLIN ANTIOQUIA
## 2 114926 INST EDUC MADRE~ 05001 MEDELLIN ANTIOQUIA
## 3 053595 COLEGIO EUSKADI~ 05001 MEDELLIN ANTIOQUIA
## 4 028019 INST EDUC CRIST~ 05001 MEDELLIN ANTIOQUIA
## 5 113514 INST EDUC RAFAE~ 05001 MEDELLIN ANTIOQUIA
## 6 000265 INST FERRINI - ~ 05001 MEDELLIN ANTIOQUIA
## 7 144576 INST EDUC MAEST~ 05001 MEDELLIN ANTIOQUIA
## 8 110825 I.E. GUADALUPAN~ 05001 MEDELLIN ANTIOQUIA
## 9 056796 SEC ESC PAULO VI 05001 MEDELLIN ANTIOQUIA
## 10 027896 INST EDUC JOSE ~ 05001 MEDELLIN ANTIOQUIA
## # ... with 53 more rows, and 19 more variables: CALENDARIO <chr>,
## # NATURALEZA <chr>, JORNADA <chr>, EVALUADOS <dbl>, PROMLECTURACRITICA <dbl>,
## # PROMMATEMATICA <dbl>, PROMSOCIALESYCIUDADANAS <dbl>,
## # PROMCIENCIASNATURALES <dbl>, PROMINGLES <dbl>,
## # PROMRAZONAMIENTOCUANTITA <dbl>, PROMCOMPETENCIASCIUDADAN <dbl>,
## # DESVLECTURACRITICA <dbl>, DESVMATEMATICA <dbl>,
## # DESVSOCIALESYCIUDADANAS <dbl>, DESVCIENCIASNATURALES <dbl>,
## # DESVINGLES <dbl>, DESVRAZONAMIENTOCUANTITA <dbl>,
## # DESVCOMPETENCIASCIUDADAN <dbl>, PERIODO <chr>
Selección de posiciones específicas de una base de datos
## # A tibble: 11 x 24
## CODINST NOMBREINSTITUCI~ CODIGOMUNICIPIO NOMBREMUNICIPIO DEPARTAMENTO
## <chr> <chr> <chr> <chr> <chr>
## 1 024745 I.E. TEC IND JU~ 15176 CHIQUINQUIRA BOYACA
## 2 005074 I.E. INTEGRADO ~ 15204 COMBITA BOYACA
## 3 075127 I.E.A. FRAY ISI~ 19701 SANTA ROSA CAUCA
## 4 152801 I.E. PADUA - S~ 68502 ONZAGA SANTANDER
## 5 174250 I.E.R. EL AFILA~ 86757 SAN MIGUEL PUTUMAYO
## 6 071548 COL. ATENEO CAL~ 17001 MANIZALES CALDAS
## 7 110353 UNIDAD EDUCATIV~ 50590 PUERTO RICO META
## 8 162016 COLEGIO AGRICOL~ 19698 SANTANDER DE Q~ CAUCA
## 9 156919 EL TRIUNFO 73352 ICONONZO TOLIMA
## 10 069906 LICEO DEL PACIF~ 76109 BUENAVENTURA VALLE
## 11 130302 LICEO INTEGRADO~ 17001 MANIZALES CALDAS
## # ... with 19 more variables: CALENDARIO <chr>, NATURALEZA <chr>,
## # JORNADA <chr>, EVALUADOS <dbl>, PROMLECTURACRITICA <dbl>,
## # PROMMATEMATICA <dbl>, PROMSOCIALESYCIUDADANAS <dbl>,
## # PROMCIENCIASNATURALES <dbl>, PROMINGLES <dbl>,
## # PROMRAZONAMIENTOCUANTITA <dbl>, PROMCOMPETENCIASCIUDADAN <dbl>,
## # DESVLECTURACRITICA <dbl>, DESVMATEMATICA <dbl>,
## # DESVSOCIALESYCIUDADANAS <dbl>, DESVCIENCIASNATURALES <dbl>,
## # DESVINGLES <dbl>, DESVRAZONAMIENTOCUANTITA <dbl>,
## # DESVCOMPETENCIASCIUDADAN <dbl>, PERIODO <chr>
## # A tibble: 11 x 24
## CODINST NOMBREINSTITUCI~ CODIGOMUNICIPIO NOMBREMUNICIPIO DEPARTAMENTO
## <chr> <chr> <chr> <chr> <chr>
## 1 024745 I.E. TEC IND JU~ 15176 CHIQUINQUIRA BOYACA
## 2 005074 I.E. INTEGRADO ~ 15204 COMBITA BOYACA
## 3 075127 I.E.A. FRAY ISI~ 19701 SANTA ROSA CAUCA
## 4 152801 I.E. PADUA - S~ 68502 ONZAGA SANTANDER
## 5 174250 I.E.R. EL AFILA~ 86757 SAN MIGUEL PUTUMAYO
## 6 071548 COL. ATENEO CAL~ 17001 MANIZALES CALDAS
## 7 110353 UNIDAD EDUCATIV~ 50590 PUERTO RICO META
## 8 162016 COLEGIO AGRICOL~ 19698 SANTANDER DE Q~ CAUCA
## 9 156919 EL TRIUNFO 73352 ICONONZO TOLIMA
## 10 069906 LICEO DEL PACIF~ 76109 BUENAVENTURA VALLE
## 11 130302 LICEO INTEGRADO~ 17001 MANIZALES CALDAS
## # ... with 19 more variables: CALENDARIO <chr>, NATURALEZA <chr>,
## # JORNADA <chr>, EVALUADOS <dbl>, PROMLECTURACRITICA <dbl>,
## # PROMMATEMATICA <dbl>, PROMSOCIALESYCIUDADANAS <dbl>,
## # PROMCIENCIASNATURALES <dbl>, PROMINGLES <dbl>,
## # PROMRAZONAMIENTOCUANTITA <dbl>, PROMCOMPETENCIASCIUDADAN <dbl>,
## # DESVLECTURACRITICA <dbl>, DESVMATEMATICA <dbl>,
## # DESVSOCIALESYCIUDADANAS <dbl>, DESVCIENCIASNATURALES <dbl>,
## # DESVINGLES <dbl>, DESVRAZONAMIENTOCUANTITA <dbl>,
## # DESVCOMPETENCIASCIUDADAN <dbl>, PERIODO <chr>
Ordenar la base de datos
Seleccion de columnas
Elementos o registros únicos
## # A tibble: 32 x 1
## DEPARTAMENTO
## <chr>
## 1 HUILA
## 2 CUNDINAMARCA
## 3 ANTIOQUIA
## 4 VALLE
## 5 BOGOTA
## 6 CALDAS
## 7 TOLIMA
## 8 BOYACA
## 9 CAUCA
## 10 NORTE SANTANDER
## # ... with 22 more rows
## # A tibble: 32 x 1
## DEPARTAMENTO
## <chr>
## 1 HUILA
## 2 CUNDINAMARCA
## 3 ANTIOQUIA
## 4 VALLE
## 5 BOGOTA
## 6 CALDAS
## 7 TOLIMA
## 8 BOYACA
## 9 CAUCA
## 10 NORTE SANTANDER
## # ... with 22 more rows
Adicionar una nueva columna
Resumir variables o consolidar valores
## # A tibble: 1 x 1
## `mean(PROMMATEMATICA)`
## <dbl>
## 1 48.7
## # A tibble: 1 x 1
## `mean(PROMMATEMATICA)`
## <dbl>
## 1 48.7
Combinación de “verbos” en base de datos
agrupados_deptos <- group_by(Icfes2, DEPARTAMENTO)
promedio_depto <- summarise(agrupados_deptos, mean(PROMMATEMATICA))
promedio_deptoMediante encadenamiento de verbos
Icfes2 %>%
group_by(DEPARTAMENTO) %>%
select(PROMMATEMATICA:PROMCOMPETENCIASCIUDADAN) %>%
summarise_if(is.numeric,mean)Combinación de manejo de datos
Icfes2 %>%
mutate(promTotal = rowMeans(.[10:16])) %>%
group_by(CODIGOMUNICIPIO) %>%
arrange(desc(promTotal)) %>%
select(NOMBREINSTITUCION, NOMBREMUNICIPIO, DEPARTAMENTO, promTotal) %>%
slice(1:3)¿Cuántas Instituciones Educativas tiene cada municipio?
Icfes2 %>%
group_by(CODIGOMUNICIPIO, NOMBREMUNICIPIO, DEPARTAMENTO) %>%
summarise(n = n()) %>%
select(DEPARTAMENTO, NOMBREMUNICIPIO, n) %>%
group_by(DEPARTAMENTO) %>%
arrange(desc(n))library(ggplot2)
Icfes2 %>%
ggplot(aes(x = PROMLECTURACRITICA,y = PROMMATEMATICA,
fill=JORNADA,colour=JORNADA))+
geom_point()
Icfes2 %>%
ggplot(aes(x = PROMLECTURACRITICA,y = PROMMATEMATICA,
fill=JORNADA,colour=JORNADA))+
geom_point()+facet_grid(CALENDARIO~NATURALEZA)+
theme_bw()
Icfes2 %>%
ggplot(aes(y = PROMMATEMATICA,x=DEPARTAMENTO,
fill=DEPARTAMENTO))+
geom_boxplot()+ theme(legend.position = "none",
axis.text.x = element_text(angle = 90))